#include "roleman.h"

void Roleman::HeroInit(char name[20],CGameMap & gamemap){
strcpy(m_Name,name);
    m_Lv = 1;
    m_Hp= m_MaxHp = m_Lv *100;
    m_Att = m_Lv * 10;
    m_Def = m_Lv * 2;
    m_Exp =0;
    m_BlueKey = 1;
    m_RedKey = 1;
    m_YellowKey = 1;
/// /初始化玩家坐标
for (int i = 0; i< 18; i++){
  for (int j = 0; j< 18;j++){
    if(9==gamemap.GetMap([i][j]){//9是玩家id
    m_PosX = i;
            m_PosY = j;
            return;
    }
  }
}

void Roleman::HeroMove(CGameMap&gamemap)
            {
                int Input = getch();
                int OffSetX = 0, OffSetY = 0;
                switch (Input)
                {
                case 's':
                case 'S':
                    OffSetY = 1;
                    break;
                case 'w':
                case 'W':
                    OffSetY = -1;
                    break;
                case 'd':
                case 'D':
                    OffSetX = 1;
                    break;
                case 'a':
                case 'A':
                    OffSetX = -1;
                    break;
                default:
                    break;
                }
                if (0 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY+OffSetY])
                {
                    //修改地图的数据
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                }
                else if (2 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {

                    //修改地图的数据
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    Sleep(1000);
                    outtextxy(32 * 1, 32 * 19, "      游戏胜利       ");
                }
                else if (4 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]
                    ||5 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]
                    || 6 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]
                    || 7 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]
                    )
                {
                    // 实现战斗的逻辑
                        char path[40] = {};
                        sprintf(path, "%d.monster", gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]);
                    if (HeroFight(path))
                    {
                        outtextxy(32 * 1, 32 * 19, "                                  ");
                        outtextxy(32 * 19, 32 * 8, "                         ");
                        //修改地图的数据
                        gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                        gamemap.GetMap()[m_PosX][m_PosY] = 0;
                        //修改玩家的坐标
                        m_PosX += OffSetX;
                        m_PosY += OffSetY;
                    }

                }

                else if (14 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_RedKey += 1;
                }
                else if (15 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_BlueKey += 1;
                    /*char *m=intToWchar(m_BlueKey);
                    outtextxy(32 * 18 + 32 * 3, 32 * 2, *m);*/
                }
                else if (16 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_YellowKey += 1;
                }
                else if (24 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    if ((m_Hp + 100) > m_MaxHp)
                        m_Hp = m_MaxHp;
                    else
                    {
                        m_Hp += 100;
                    }
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;

                }
                else if (25 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    if ((m_Exp + 20) >= 100)
                    {
                        m_Lv += 1;
                        m_Exp = 0;
                    }
                    else
                    {
                        m_Exp += 20;
                    }

                }
                else if (26 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Def += 2;
                }
                else if (27 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Att += 5;
                    m_Def += 2;
                }
                else if (28 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Att += 1;
                    m_Def += 4;
                }
                else if (34 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    if (0 != m_RedKey)
                    {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_RedKey -= 1;
                    }

                }
                else if (35 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    if (0 != m_BlueKey)
                    {
                        gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                        gamemap.GetMap()[m_PosX][m_PosY] = 0;
                        //修改玩家的坐标
                        m_PosX += OffSetX;
                        m_PosY += OffSetY;
                        m_BlueKey -= 1;
                    }

                }
                else if (36 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])
                {
                    if (0 != m_YellowKey)
                    {
                        gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                        gamemap.GetMap()[m_PosX][m_PosY] = 0;
                        //修改玩家的坐标
                        m_PosX += OffSetX;
                        m_PosY += OffSetY;
                        m_BlueKey -= 1;
                    }

                }
            }
